#include "callbacks.h"


void disp_gtk_on_change_pawns(GtkWidget* widget, Case grille[6][6]) {
    const gchar *radioName;
    int i,j;
   /* Case *grille;
    grille = (Case*)data;*/
  /*  Case **grille = (Case**)data;*/
    
    radioName = gtk_label_get_label(GTK_LABEL(GTK_BIN(widget)->child));

    if ( !strcmp(radioName, "wood") ) {
	pawnPlayer = "pion2.png";
	pawnComputer = "pion3.png";

    } else if ( !strcmp(radioName, "pion2") ) {
	pawnPlayer = "pion1.png";
	pawnComputer = "pion0.png";

    } else {
	/* prevoir quelque chose ? */
    }

    for ( i = 0 ; i < 6 ; i++ ) {
	for ( j = 0 ; j < 6 ; j++ ) {
	    if ( grille[i][j].image != NULL ) {
		/* LA CONDITION SERA A CHANGER DES QUE LA STRUCTURE SERA DEFINIE */
		if ( i < 2 ) {
		    gtk_image_set_from_file(GTK_IMAGE(grille[i][j].image), pawnComputer);
		} else {
		    gtk_image_set_from_file(GTK_IMAGE(grille[i][j].image), pawnPlayer);
		}
	    }
	}
    }
}

void disp_gtk_on_change_background(GtkWidget* widget, gpointer data) {
    const gchar *radioName;

    radioName = gtk_label_get_label(GTK_LABEL(GTK_BIN(widget)->child));

    if ( !strcmp(radioName, "desert") ) {
	background = "fond1.jpg";

    } else if ( !strcmp(radioName, "elephant") ) {
	background = "fond2.jpg";

    } else {
	/* prevoir quelque chose ? */
    }

    gtk_image_set_from_file(data, background);


}

void disp_gtk_on_change_level(GtkWidget* widget, gpointer data) {
    const gchar *RadioName;

    /* Recuperer le label du bouton radio active */
    RadioName = gtk_label_get_label(GTK_LABEL(GTK_BIN(widget)->child));

    if ( !strcmp(RadioName, "facile") ) {
	level = LEVEL_EASY;
    } else if ( !strcmp(RadioName, "moyen") ) {
	level = LEVEL_MEDIUM;
    } else {
	level = LEVEL_HARD;
    }
}

void disp_gtk_on_about(GtkWidget* widget, gpointer data) {
    GtkWidget *about;

    about = gtk_message_dialog_new (GTK_WINDOW(data),
        GTK_DIALOG_MODAL,
        GTK_MESSAGE_INFO,
        GTK_BUTTONS_OK,
        "\nRealisation : Simon Bourigault et Arnaud Aujon\n"
        "à l'aide de la librairie Gtk+ 2.0\n"); /* attention pas accent sinon utilsation d'une librairie en plus pango ?*/

    gtk_dialog_run(GTK_DIALOG(about));

    gtk_widget_destroy(about);
}

void disp_gtk_on_rules(GtkWidget* widget, gpointer data) {
    GtkWidget *window;
    gchar *but = "Le but du jeu est de capturer toutes les pièces de l´adversaire.";
    gchar *move = "Chaque joueur joue un mouvement, à tour de rôle. Les mouvements sont faits en déplaçant une de ses propres pièces du noeud où elle est placée jusqu´à un noeud adjacents qui soit libre. Le déplacement pourra être fait horizontalement, verticalement ou en diagonale, vers l´avant ou vers l´arrière (comme le roi aux échecs)";
    gchar *capture = "Pour prendre une pièce adverse, il faut se déplacer en ligne droite, d'autant de cases que l'on souhaite, mais en transitant par au moins un cercle avant d'atteindre la cible. Le pion adverse est retiré et on se met à sa place. Il n'est jamais autorisé de passer au dessus d'un autre pion, ami ou adverse. On peut enchaîner plusieurs sections courbes et droites afin de réaliser une capture. On ne peut pas sauter par dessus d´autres pièces.";

    /* Creation de la boite de message */
    window = gtk_message_dialog_new (GTK_WINDOW(data),
        GTK_DIALOG_MODAL,
        GTK_MESSAGE_INFO,
        GTK_BUTTONS_OK,
        "%s\n\n%s\n\n%s",
        but, move, capture);

    /* Affichage de la boite de message */
    gtk_dialog_run(GTK_DIALOG(window));

    /* Destruction de la boite de dialogue */
    gtk_widget_destroy(window);
}

void disp_gtk_on_quit(GtkWidget* widget, gpointer mainWindow) {
    GtkWidget *Question;

    /* Creation de la boite de message */
    /* Type : Question -> GTK_MESSAGE_QUESTION */
    /* Boutons : 1 OUI, 1 NON -> GTK_BUTTONS_YES_NO */
    Question = gtk_message_dialog_new (GTK_WINDOW(mainWindow),
        GTK_DIALOG_MODAL,
        GTK_MESSAGE_QUESTION,
        GTK_BUTTONS_YES_NO,
        "Do you really want\nto quit the game ?");

	/* Affichage et attente d une reponse */
    switch(gtk_dialog_run(GTK_DIALOG(Question)))
    {
        case GTK_RESPONSE_YES:
            /* OUI -> on quitte l application */
            gtk_main_quit();
            break;
        case GTK_RESPONSE_NO:
            /* NON -> on detruit la boite de message */
            gtk_widget_destroy(Question);
            break;
    }
}

void disp_gtk_on_press_square(GtkWidget* widget, GdkEventButton *event, int *coord) {
	/*int *coord = (int*)data;*/
	/*int x = *(int*)data;*/
	fprintf(stderr, "Clic sur la case : %d,%d\n", coord[0], coord[1]);
	/*fprintf(stderr, "Clic sur la case : %d,%d\n", (int)*data, (int)*(data+1));*/
	
}

void disp_gtk_move(GtkWidget* table, Case grille[6][6], Move move, int turn) {
	
	/* on detruit l'image à la position d'origine */
	destroy(grille[move.xi][move.yi].image)
	
	/* on affiche le pion sur la case d'arrivée */
	/* on vérifie si la case ne contient pas déjà un pion */
	if ( move.capture ) {
		/* on detruit l'image */
		destroy(grille[move.xf][move.yf].image);
	}
	if ( turn == PLAYER1 )
		grille[move.xf][move.yf].image = gtk_new_image_from_file(pawnPlayer);
	} else {
		grille[move.xf][move.yf].image = gtk_new_image_from_file(pawnComputer);
	}
}
